home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / music / 7 / pascal / dirlist.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1985-11-19  |  1.6 KB  |  67 lines

  1. PROGRAM dir_test ;
  2.  
  3.   TYPE
  4.     fn_range = 1..14 ;
  5.     fname = PACKED ARRAY [ fn_range ] OF char ;
  6.     frec = PACKED RECORD
  7.              reserved : PACKED ARRAY [ 0..19 ] OF byte ;
  8.              resvd2 : byte ;
  9.              attrib : byte ;
  10.              time_stamp : integer ;
  11.              date_stamp : integer ;
  12.              size : long_integer ;
  13.              name : fname ;
  14.            END ;
  15.     path_name = PACKED ARRAY [ 1..80 ] OF char ;
  16.  
  17.   VAR
  18.     r : frec ;
  19.     i : fn_range ;
  20.     path_string : STRING ;
  21.     path : path_name ;
  22.  
  23.   PROCEDURE set_dta( VAR buf : frec ) ;
  24.     GEMDOS( $1a ) ;
  25.  
  26.   FUNCTION get_first( VAR path : path_name ; search_attrib :integer ):integer ;
  27.     GEMDOS( $4e ) ;
  28.  
  29.   FUNCTION get_next : integer ;
  30.     GEMDOS( $4f ) ;
  31.  
  32.   PROCEDURE show_file( VAR r : frec ) ;
  33.  
  34.     VAR
  35.       i : fn_range ;
  36.  
  37.     BEGIN
  38.       WITH r DO
  39.         BEGIN
  40.           write( attrib:2:h, ' ', time_stamp:4:h, ' ', date_stamp:4:h, ' ',
  41.                 size:8:h, ' ' ) ;
  42.           i := 1 ;
  43.           WHILE (i <= 14) AND (name[i] <> chr(0)) DO
  44.             BEGIN
  45.               write( name[i] ) ;
  46.               i := i + 1
  47.             END ;
  48.           writeln ;
  49.         END ;
  50.     END ;
  51.  
  52.   BEGIN
  53.     write( 'search path: ' ) ;
  54.     readln( path_string ) ;
  55.     FOR i := 1 TO length( path_string ) DO
  56.       path[i] := path_string[i] ;
  57.     path[ length(path_string)+1 ] := chr(0) ;
  58.     set_dta( r ) ;
  59.     IF get_first( path, 0 ) < 0 THEN
  60.       writeln( 'no files match specification!' )
  61.     ELSE
  62.       REPEAT
  63.         show_file( r ) ;
  64.       UNTIL get_next < 0 ;
  65.   END.
  66.  
  67. UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU